"use client";
import {
claimActivityReward,
ContinuousCfgItem,
ContinuousListItem,
ContinuousResult,
ContinuousRewardItem,
ContinuousStageItem,
getContinuousRechargeInfo,
} from "@/api/activity";
import CutDown from "@/components/CutDown";
import GlobalNotify from "@/components/ModalPopup/GlobalNotifyModal";
import { useRouter } from "@/i18n/routing";
import { formatAmount } from "@/utils/index";
import { Toast } from "antd-mobile";
import BigNumber from "bignumber.js";
import clsx from "clsx";
import { useTranslations } from "next-intl";
import { useSearchParams } from "next/navigation";
import React from "react";
import styles from "./page.module.scss";
interface Cfg1Item {
text: string;
text2: string;
key: number;
footer: string;
footer2?: string;
}
interface StageItem extends ContinuousStageItem, Cfg1Item {}
interface ListItem {
dayId: number;
data: ContinuousListItem;
}
interface RewardItem {
dayId: number;
data: ContinuousRewardItem[];
}
//"#297fcf"
const DayItem = ({
data,
idx,
onClaim,
level,
}: {
data: ContinuousCfgItem;
idx: number;
onClaim: (data: ContinuousCfgItem) => void;
level: string;
}) => {
const dayColor = React.useMemo(() => {
return ["#12940f", "#297fcf", "#ec3920"][idx % 3];
}, [idx]);
const doClaim = () => {
if (onClaim && typeof onClaim === "function") {
onClaim(data);
}
};
return (
{data.id >= 2 && (
)}
{!!data.end_at && (
)}
{data.days}
Recarga contínua por {data.days} dias
Recompensa de login
{/* {level} */}
{/* {data.target_reward}R */}
{data.is_sign === 0 ? "Recebido" : "Receber"}
);
};
const Page = () => {
const t = useTranslations();
const query = Object.fromEntries(useSearchParams());
const [data, setData] = React.useState({} as ContinuousResult);
const router = useRouter();
const dayContainer = React.useRef(null);
const [amount, setAmount] = React.useState({});
const [visible, setVisible] = React.useState(false);
const act = React.useMemo(() => {
if (!data || data.type === 11) return 0;
return 1;
}, [data]);
React.useEffect(() => {
getData();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const getData = async () => {
const res = await getContinuousRechargeInfo({ activity_id: Number(query.activity_id) });
if (res.code === 200) {
setData(res.data);
}
};
const cfg1: Record = React.useMemo(() => {
return {
1: {
text: "LOGIN ",
text2: "PLATINUM",
key: 1,
footer: "Alcançou",
},
2: {
text: "LOGIN",
text2: "GOLD",
key: 2,
footer: "Ainda preciso",
},
3: {
text: "LOGIN",
text2: "DIAMANTE",
key: 3,
footer: "Ainda preciso",
},
// 4: {
// text: "ENTRAR NO",
// text2: "MONOPOLY",
// key: 4,
// footer: "Ainda preciso",
// },
// 5: {
// text: "ENTRAR NO",
// text2: "MONOPOLY",
// key: 5,
// footer: "Ainda preciso",
// },
// 6: {
// text: "ENTRAR NO",
// text2: "MONOPOLY",
// key: 6,
// footer: "Ainda preciso",
// },
// 7: {
// text: "ENTRAR NO",
// text2: "MONOPOLY",
// key: 7,
// footer: "Ainda preciso",
// },
};
}, []);
const stage = React.useMemo(() => {
let stags = data?.list?.stage;
if (!data?.list?.stage) {
stags = [
{ id: 1 },
{ id: 2 },
{ id: 3 },
// { id: 4 },
// { id: 5 },
// { id: 6 },
// { id: 7 },
] as unknown as ContinuousStageItem[];
}
const result: StageItem[] = stags
.map((item) => {
console.log(112233, item);
return {
...item,
...cfg1[item.id],
footer2: item.diff_num ? `${item.diff_num}R` : "",
};
})
.sort((a: ContinuousStageItem, b: ContinuousStageItem) => a.id - b.id);
return result; //[{ id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }];
}, [data?.list?.stage, cfg1]);
const list = React.useMemo(() => {
if (!data?.list?.list) {
return [];
}
const result: ListItem[] = [] as ListItem[];
Object.keys(data?.list?.list).forEach((key: string) => {
const item = data?.list?.list[key as any];
const key1 = Object.keys(item)[0];
result.push({ dayId: Number(key), data: item[key1 as any] });
});
console.log(result);
return result.sort((a, b) => a.dayId - b.dayId);
}, [data?.list?.list]);
const reward_list = React.useMemo(() => {
if (!data?.list?.reward_list) {
return [];
}
const result: RewardItem[] = [] as RewardItem[];
Object.keys(data?.list?.reward_list).forEach((key: string) => {
const item = data?.list?.reward_list[key as any];
const res2: ContinuousRewardItem[] = [];
Object.keys(item).forEach((key2: string) => {
const item2 = item[key2 as any];
res2.push(item2);
});
result.push({ dayId: Number(key), data: res2 });
});
return result;
}, [data?.list?.reward_list]);
const waitList = React.useMemo(() => {
if (!data?.list?.config_list) return [];
const result = [] as ContinuousCfgItem[];
data?.list?.config_list.forEach((item) => {
if (
item.is_sign === 0 ||
item.is_suss === 1 ||
!(item.start_at * 1000 < Date.now() && item.end_at * 1000 > Date.now())
) {
item.isCanClaim = false;
} else {
item.isCanClaim = true;
}
result.push(item);
});
return result.sort((a, b) => a.days - b.days);
}, [data?.list?.config_list]);
const goDeposit = () => {
router.push("/deposit");
};
const doClaim = async (data: ContinuousCfgItem) => {
if (!query.activity_id) {
Toast.show({ content: "Missing activity ID" });
return;
}
if (!data.is_sign) return;
try {
const res = await claimActivityReward({
activity_id: Number(query.activity_id),
id: data.days,
});
if (res.code === 200 && res?.data?.code === 1) {
const amountObj: any = {};
if (res?.data?.reward) {
res?.data?.reward.forEach((item: any) => {
amountObj[`coin_${item.coin_type}`] = formatAmount(item.amount);
});
}
if (res?.data?.extra_reward) {
res?.data?.extra_reward.forEach((item: any) => {
amountObj[`coin_${item.coin_type}`] = formatAmount(
new BigNumber(amountObj[`coin_${item.coin_type}`] || 0)
.plus(item.amount)
.toString()
);
});
}
setAmount(amountObj);
setVisible(true);
getData();
} else {
throw new Error(t(`code.400`));
}
} catch (error: any) {
if (error) {
Toast.show({
content: error.message || error.toString(),
maskClickable: false,
});
}
}
};
return (

{/*
RECARGA
*/}
{!!list?.length && (
{list.map((item, idx) => {
return (
recarga
{item.data.pay_num}
Dia {item.dayId}
);
})}
)}
{/* {!!list?.length && (
{list.map((item: any) => {
return (
{item.dayId} dia
{item.dayId}
dia
recarga
{item?.data?.pay_num}
);
})}
)} */}
{!!waitList.length && (
{act === 1 && (
AMIGO ENTRAR PARA
RECEBER CORTESIA
)}
{act === 0 && (
ENTRAR E RECEBER CORTESIA
)}
{waitList.map((item, idx: number) => {
return (
);
})}
)}
Dias de
depósito
Requisitos da
atividade
{data.type === 11 && (
Valor do
bônus
)}
{data.type === 13 && (
Recompensas
de Agente
)}
{reward_list.map((item) => {
return (
Recarga contínua por{" "}
{item.dayId}dias
{item.data.map((item2, idx) => {
return (
Mais de {item2.target_num} por
dia
{item2.target_reward}
);
})}
);
})}
Regras de Atividade
-
Jogadores que atendem aos requisitos podem receber o
bônus diretamente.
-
Solicite o bônus desta promoção dentro do período
promocional. Não se inscrever após o prazo limite será
considerado como desistência automática.
-
Ao participar desta promoção, você concorda em cumprir
as Regras e Termos da Promoção.
-
Todas as ofertas são liquidadas em RMB (CNY) e são
baseadas no horário de Pequim.
-
Cada jogador, domicílio, endereço, endereço de e-mail,
número de telefone, método de pagamento (mesmo cartão de
débito/crédito/conta bancária) e endereço IP só pode
aproveitar a oferta uma vez por dia.
-
Se for descoberto que qualquer grupo ou indivíduo está
obtendo bônus desonestamente ou abusando de benefícios
da empresa, a empresa reserva-se o direito de congelar
ou cancelar o saldo do grupo.
-
A Ginkgo Live reserva-se o direito de interpretação
final do evento; bem como o direito de modificar ou
encerrar o evento sem aviso prévio.
setVisible(false)}
deraction={5000}
>
);
};
export default Page;